SlideShare a Scribd company logo
1 of 51
Download to read offline
How to Schedule
Machine Learning Workloads
Nicely In Kubernetes
Shingo Omura, Preferred Networks, Inc.
Cloud Native Days Tokyo 2020
(Day2) 09/09 15:00-15:40 - Track F
自己紹介 - 大村伸吾 (Shingo Omura)
● エンジニア, Preferred Networks, Inc.
○ 社内向けGPUクラスタの開発運用
○ kubernetes sig-scheduling で活動中
● @everpeace (twitter)
● shingo.omura (facebook)
2
PFN における機械学習クラスタ関連の過去のスライド
3
KeyNote at July Tech Festa 2018
SlideShare
Kubernetes Meetup Tokyo #13
SlideShare
Outline
● PFNのクラスタ概要
● PFNにおける典型的なML Workload
● ML Workloadにおける典型的なスケジューラへの要求
● KubernetesにおけるBatch Schedulerの現状
● KubernetesにおけるScheduler Deployment戦略
● kube-shedulerの動作概要と拡張方式
● PFNにおける kube-scheduler の活用&拡張事例
● まとめ
4
5
PFN の クラスタ概要
2017年
Tesla P100 PCIe x 8
10GbE x 2
InfiniBand FDR x 2
Total 1024 GPUs
19.1 PFLOPS
MN-1a Server Spec
MN-3 Series
6
PFN の クラスタ
MN-1 Series MN-2 Series
2020年
MN-Core x 4
100GbE x 2
MN-3a Server Spec
Total 192 MN-Cores
4.7 PFLOPS
(21.11 GFLOPS/W)
MN-Core DirectConnect
Icon pack by Icons8 - https://icons8.com
NVIDIA GPUなどの最新技術を採用した プライベート・スーパーコンピュータ MN-2 を自社構築し、 7月に稼働
Preferred Networksの深層学習用スーパーコンピュータ MN-3がスーパーコンピュータ省電力性能ランキング Green500で世界1位を獲得
世界1位!!
2019年
Tesla V100 SXM2 x 8
100GbE x 4
MN-2a Server Spec
Total 1024 GPUs
128 PFLOPS
RoCEv2 with SR-IOV
2018年
Tesla V100 PCIe x 8
10GbE x 2
InfiniBand EDR x 2
MN-1b Server Spec
Total 1536 GPUs
57.3 PFLOPS
PFNにおける典型的な
ML Workloadたち
7
8
PFN の 研究環境
多種多様なデータ多種多様な研究
大量の機械学習ジョブ
オンプレのGPUクラスター
自社開発した技術
Icon pack by Icons8 - https://icons8.com
多くの研究者
PFNにおける典型的なワークロード
9
All-Reduce スタイル
分散深層学習ジョブ
(並列)ジョブ
ワークフロー
分散(深層)強化学習ジョブ(*)
Environments
+ Actors
Distributed
Learners
(*)[2007.08082] Distributed Reinforcement Learning of Targeted Grasping with Active Vision for Mobile Manipulators
本日あつかうトピック
10
制御
配置
再配置
Podを
いつどのNodeに
配置/再配置するか
CRD/Controller
を使って
複雑なジョブ構成/実行を
制御する
今日は
こちら
(Schedule)
(PFNにおける)
ML Workloadにおける典型的な
スケジューラへの要求
11
12
PFN での Scheduler(Podへの配置/再配置) への要求
● High Resource Utilization (Packing / Defrag)
● Priority Scheduling / Preemption
● Gang-Scheduling (a.k.a. Co-Scheduling)
● Network Topology Aware Scheduling (a.k.a. Zone Aware Scheduling)
● Hardware Topology Aware Scheduling
● Soft Quota (a.k.a. Throttling)
● Flexible Fair Schduling
● GPU Driver Version/GPU Model pinning
High Utilization Rate
● Packing: できるだけ効率よくPodをNodeに詰めたい
○ Podのリソース要求は多次元ベクトル
■ 1次元でもNP-Hardな組合せ最適化問題(Bin Packing)
● Defrag: フラグメンテーションを除去したい
○ Podの実行時間は不定なので時間が建つと穴が開く
13
Packing
High Utilization Rate
● Packing: できるだけ効率よくPodをNodeに詰めたい
○ Podのリソース要求は多次元ベクトル
■ 1次元でもNP-Hardな組合せ最適化問題(Bin Packing)
● Defrag: フラグメンテーションを除去したい
○ Podの実行時間は不定なので時間が建つと穴が開く
14
デフラグ
Priority Scheduling / Preemption
● たとえクラスタが混んでいても、重要なジョブは動かしたい
○ 重要でないPodを止め(Preemptし)て重要なPodを動かしたい
15Icons made by Freepik from www.flaticon.com is licensed by CC 3.0 BY
プリエンプト
される
(犠牲になる)
Priority Scheduling / Preemption
● たとえクラスタが混んでいても、重要なジョブは動かしたい
○ 重要でないPodを止め(Preemptし)て重要なPodを動かしたい
16Icons made by Freepik from www.flaticon.com is licensed by CC 3.0 BY
他のコンテナを
プリエンプト
して実行
Gang-Scheduling (a.k.a. Co-Scheduling)
● 複数のPodを一度に配置したい
○ All-Reduceの分散深層学習は全pod揃わないと計算開始できない
○ 2つの Gang を1 Podずつ配置すると容易にdeadlockしてしまうため
17Icons made by Freepik from www.flaticon.com is licensed by CC 3.0 BY
Job A
Job B
どちらも
サイズ6
Network Topology Aware Scheduling
(a.k.a. Zone Aware Scheduling)
● 分散深層学習はpod間のネットワークが早い方が学習も早い
● 特定のゾーン/どこか単一(unique)なゾーンに配置したい
○ ゾーン = Network的に近いノードの塊
例: Availability Zone, Placement Group
18
Zone A
Node-A-1 Node-A-2
Node-A-3 Node-A-4
Zone B
Node-B-1 Node-B-2
Node-B-3 Node-B-4
Zone Bがいいです
いいです  
Zoneに閉じるならどこでも
Hardware Topology Aware Scheduling
● サーバ内のハードウェアにもトポロジがある
● うまく割り当てないとボトルネックになりうる
19Icon pack by Icons8 - https://icons8.com
NUMA NodeNUMA Node
GPU NIC
MEM CPU CPU
MEM
NIC GPU
Hardware Topology Aware Scheduling
● サーバ内のハードウェアにもトポロジがある
● うまく割り当てないとボトルネックになりうる
20Icon pack by Icons8 - https://icons8.com
NUMA NodeNUMA Node
GPU NIC
MEM CPU CPU
MEM
NIC GPUNVLink等のGPU間
Interconnectが
利用可能場合あり
NUMA Nodeを
超えるデータ転送は
ボトルネックになりがち
使いすぎなので
Scheduleしません
Soft Quota (a.k.a. Throttling)
● Kubernetes の Quota はv1.19時点ではHard Quota
○ Hard Quota 超過したらPod作成エラーになる
● 利用上限はかけたいけどPodは投げておきたい
○ Podは作れるけどスケジュールされないようにしたい
21
まだ使ってOK
Gauge by www.mindgraphy.com from the Noun Project
Namespace A
Namespace B
“Flexible” Fair Schduling
● 複数で利用するので、公平性(Fairness) は大事
○ ユーザ単位、プロジェクト単位
● 様々な公平性の例
○ First Come First Served: 早いもの勝ち(ある意味公平?)
○ Dominant Resource Fairness (DRF):
■ Max-Min Fairness の一種
■ Hadoop Yarn でも実装されてている
■ Dominant Resource Share が均等なことを「公平」と見る
● Dominant Resouce Share = 各リソースの消費割合の最大値
= MAX(CPU share, Memory share, GPU share)
○ DRF over time
■ 次元を リソース量・時間 に拡張
22
厄介なことに
ビジネス的にはUnfair
な状態が
望ましいことがある
GPU Driver Version/GPU Model pinning
● GPUモデル、メモリ量、ドライババージョン等を固定したい
23gpu by Misha Petrishchev from the Noun Project
GPUの搭載メモリ
32G 16G
GPUモデル
V100 P100
GPU Driverバージョン
CUDA 9 CUDA 10
24
PFN での Scheduler(Podへの配置/再配置) への要求
● High Resource Utilization (Packing / Defrag)
● Priority Scheduling / Preemption
● Gang-Scheduling (a.k.a. Co-Scheduling)
● Network Topology Aware Scheduling (a.k.a. Zone Aware Scheduling)
● Hardware Topology Aware Scheduling
● Soft Quota (a.k.a. Throttling)
● Flexible Fair Schduling
● GPU Driver Version/GPU Model pinning
OSS Batch Scheduler
on Kubernetes?
25
26
Batch Scheduler はあまり多くないのが現状
● Volcano
○ CNCF Sandbox Project (since May 2020)
○ sig-schedulingで開発中のkube-batch(*)をベースとするcustom schedulerを
コアとするバッチシステム
○ Queue, Fair scheduilng(Dominant Resource Fairnessベース),
Gang scheduling, priority/preemption等をサポート
○ Kubeflow でも gang scheduling用のscheduerとしてintegrateされている
■ 注意: 高負荷な環境で gangが部分停止するとdeadlockが起きると指摘あり
● kube-scheduler
○ kubernetesのdefaultスケジューラ
○ 様々なpre-definedなポリシーが設定可能
○ カスタム拡張がプラグインできるようになっている
■ 最近特に拡張性を高める機能開発が活発に行われている
○ Batch専用ではないが拡張することである程度対応可能
(*)現在あまり活発に開発されていないので注意
Kubernetesにおける
Scheduler Deployment 戦略
27
Kubernetes における Scheduler Deployment 戦略
28
kube-scheduler
custom
scheduler
kube-scheduler
+ extensions
multiple
schedulers
Podの
spec.schedulerName
でschedulerを選択
kube-scheduler v.s. Custom Scheduler
😀 defaultなので最新機能/仕様に追従できる
😀 kube-schedulerの機能を保持したまま拡張可能
○ node selector, taint/toleration, affinity/anti-affinity,
preemption policy等
😕 kube-schedulerの基本動作(後述)からは逸脱できない
29
kube-scheduler
(+ extensions)
custom
scheduler
😀 柔軟な実装が可能
😕 kube-schedulerの仕様の再実装が必要
○ volcano は conformance test(e2e) は通ったことがある
○ 重要な機能はkube-scheduler内部で実装されている
😕 kubernetes側で新たな仕様が追加されると追従が必要
How About Multiple Schedulers??
😀 schedule ポリシーを分割できる(例:サービス、バッチ用)
○ もし分けるなら対象node poolを混ぜないのがお勧め
😕 複数スケジューラにおける注意点
○ 排他処理しないと高負荷時はNodeがあふれる
○ ポリシーのconflictが起きると厄介
■ サービス→ spread, バッチ → packing
○ kube-scheduler の Preemption は cross-scheduler
preemptionなので注意が必要
■ 例: custom schedulerが低優先度podを置いても置いても
kube-schedulerでpreemptionし続ける
30
multiple
schedulers
PFNのGPUクラスタでの現時点での判断
● 常にバージョンアップされ続けるkubernetesでは
kube-schedulerの拡張性を最大限活用する
● kube-schedulerの拡張性が足りなければupstreamへ貢献
○ Co-Scheduling Plugin
■ kubernetes/enhancements#1463,
kubernetes-sigs/scheduler-plugins#4
○ PostFilter(Preemption) ExtetionPoint (since v1.19):
■ kubernetes/kubernetes#85871, #90025, #91038,
#93534
● Volcanoもwatchを継続する
31
kube-scheduler
+ extensions
kube-scheduler
〜動作概要と拡張方法〜
32
33
kube-scheduler の 動作概要
出典: そのコンテナ、もっと「賢く」置けますよ? #CNDT2019 / CloudNative Days Tokyo 2019
Special Thanks 🎉
@y_taka_23
①
Node未定Podを
キューに格納
②
1個ずつ取り
出して配置先
Nodeを決定
③
Pod毎に並行で
Nodeを登録
※ ①②③のテキストは講演者による加筆
34
kube-scheduler の 動作概要
出典: そのコンテナ、もっと「賢く」置けますよ? #CNDT2019 / CloudNative Days Tokyo 2019
Special Thanks 🎉
@y_taka_23
通常時
● Filter, Scoreは色々提供されている
● 拡張によってカスタム関数を定義可能
Preemption時
● Schedulerに選ばれたVictimを調整可能(現実
的にはあまり使い所がない )
● v1.19で拡張可能に(#91038)!!!
※ 吹き出しは講演者による加筆
kube-schedulerの拡張方法は 2 種類
• Scheduler Extender
– Webhook による拡張
– 指定したendpointとJSONをやり取り
– 拡張点: Filter, Score, Preempt, Bind
– 😕 パフォーマンス注意、拡張が限定的、内部キャッシュ効かない
• Scheduling Framework - Kubernetes
– Extenderよりも格段に柔軟な拡張ができるようになった
• Schedulerの内部処理を細かくHookできるようになった
– ただしコンパイルしないといけない(例: kubernetes-sigs/scheduler-plugins)
– Schedulerの内部キャッシュにアクセス可能
– Schedulerコードが再利用しやすい
35
Scheduler Extender
36
出典: 明日、業務で使える Scheduler Extender #cloudnativejp / Cloud Native Meetup Tokyo 7th
Special Thanks 🎉
@y_taka_23
Scheduling Framework
37
Filter失敗時の処理
since v1.19
(preemptionはここで実装可能)
Scheduler 内部でNodeが確定し
たことをPluginに通知
queueの
順序
Bind処理をWait
させることができる
PFNにおける
kube-scheduler
の活用&拡張例
38
39
(revisited) PFNでの Scheduler への要求
● High Resource Utilization (Packing/Defrag)
● Priority Scheduling / Preemption
● Gang-Scheduling (a.k.a. Co-Scheduling)
● Network Topology Aware Scheduling (a.k.a. Zone Aware Scheduling)
● Hardware Topology Aware Scheduling
● Soft Quota (a.k.a. Throttling)
● Flexible Fair Schduling
● GPU Driver Version/GPU Model pinning
High Utilization Rate
● Packing: できるだけ効率よくPodをNodeに詰めたい
✅ ScorePlugin で datacenter topology を考慮したカスタムルール
を実装して Packing している
● 通常だとNodeResourcesMostAllocated Scoreで🆗👌
○ cpu, memory, gpu等の割当率のweighted sum(重みカスタム可)
● Defrag: フラグメンテーションを除去したい
❎ 現在は行えていない
● 今後の方向性
■ descheduler を利用する
● schedulerのように実装をPluginできないため要改修
■ PostFilter Plugin で Preemptionしつつdefragを試す
40
Priority Scheduling / Preemption
✅ PFNのGPUクラスタのPriority設定(一部)
41
Grand-Challenge ● クラスタ全系を使う等、超大規模実験用(通常利用不可)
High ● 高優先度(通常preemptionされないとして利用可能)
● Soft Quota による利用リソース量制限あり(申請により緩和可能)
● non-GPU な High Pod は GPUノードにスケジュールされないように
NodeにLabel & Admission WebhookでPodにnode selector付与
Low ● 通常のワークロード用(highにpreemptionされる前提)
● Soft Quotaなし
Low-Cpu ● non-GPU Pod 用の low (Admission webhookで自動変換)
○ GPU 需要が低いときにGPUノードのCPUが利用可能
○ Low以上のPriorityのPodにpreemptionされるので注意
✅ Scheduling Frameworkを使って独自に実装
○ Sort, PreFilter, Permit を利用して実装
○ kubernetes-sigs/scheduler-plugins にも co-scheduling plugin あり
Gang-Scheduling (a.k.a. Co-Scheduling)
42
kind: Pod
metadata:
annotations:
gang-name: "job-a"
gang-size: "32"
gang-schedule-timeout: "3m"
PodのannotationでGangへの所属を定義
Gang-Scheduling (a.k.a. Co-Scheduling)
43
Gangが
続くようにソー
ト
Size分揃ってなけ
ればここでReject
Gang全PodがPermit Pluginに
到達するまでWait
(timeoutで全部reject)
Network Topology Aware Scheduling
(a.k.a. Zone Aware Scheduling)
● 特定ゾーン: Nodeにzoneラベルを付与して、node selector を使う
● Uniqueゾーン (Gangのみ対応)
○ pod Affinity + Scheduling Framework(PreFilter, Filter)で実現
■ Admission webhookでpod affinityを付与
■ Gangの最初のPodの時に空いているZoneを見つければOK
44
annotations:
gang-name: "job-a"
gang-size: "32"
uniqueue-zone-topology-key: "rack"
metadata:
labels:
gang-name: "gang-a"
...
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchLabels:
gang-name: "job-a"
topologyKey: "rack"
Webhook Icon by Icons8
Unique Zone Constraint の Scheduling Frameworkによる実装
45
● Gang の最初のPod のときだけ動作する
○ gang scheduling との連携機能
● PreFilter
○ 各Zone毎の空きを監視してGangが入るZoneを探索
○ 見つかったZoneをPlugin内に保持
● Filter
○ 見つかったZoneのnode以外はfilter outする
Hardware Topology Aware Scheduling
✅ CPU & GPU affinity
○ Topology Manager を 活用 (nvidia device pluginも対応している)
❎ (CPU&GPU) & NIC affinity: 実現できていない
○ 実装案: Device Plugin + CNI Plugin (参照: intel/sriov-network-device-plugin)
■ NIC をdevice pluginでresource化 (topology manager連携できる)
■ CNI Pluginは割り当たったNICを使ってnetworkを設定
46Icon pack by Icons8 - https://icons8.com
NUMA NodeNUMA Node
GPU NIC
MEM CPU CPU
MEM
NIC GPU
Soft Quota (a.k.a. Throttling)
✅ kube-throttler を利用(Scheduler Extenderとして動作)
○ CRDでしきい値を定義、Controllerがstatusをreconcile
47Gauge by www.mindgraphy.com from the Noun Project
# priority-class=high labelのpodの
# 利用量が4 gpu超えたらschedule拒否
kind: Throttle
spec:
...
- podSelector:
matchLabels:
priority-class: high
threshold:
resourceRequests:
nvidia.com/gpu: 4
status:
# Throttleが閉じているかどうか
# ControllerでReconcile
Throttleが閉じていたら
空を返す
Throttleが閉じていたら
空を返す
出典: 明日、業務で使える Scheduler Extender #cloudnativejp / Cloud Native Meetup Tokyo 7th
Special Thanks 🎉
@y_taka_23
✅ Dominant Resource Fairness (DRF)
○ Sort Plugin: Dominant Resource Share が小さい順に並ぶように
■ Low priority以下でののみ有効、lowより上はFirst Come First Served
❎ Flexible Fairness (近日導入予定)
○ Credit CRD を導入
○ Pod と Credit は Annotation で紐付け
○ 様々なpolicyを合成可能
■ Periodic Fill: 定期的に付与
■ Resource Usage Charge
■ Idle Pods Penalty
■ Preemptors Penalty
“Flexible” Fair Schduling
48
Icons made by Gregor Cresnar from www.flaticon.com is licensed by CC 3.0 BY
Money bag from pingwing
Sort Plugin: Creditの多いもの順に並べる
PostFilter: Creditの少ない順にVictimに
(※ low priority同士もpreemption対象に )
watch
Manage
Balances
Credit Controller
GPU Driver Version/GPU Model pinning
✅ kubernetes-sigs/node-feature-discovery を参考に独自のFeature Discovery
DaemonsetをデプロイしてNode Labelを管理
○ ユーザは所望のnode selectorを付与してPodを作成
49gpu by Misha Petrishchev from the Noun Project
kind: Node
metadata:
labels:
gpu-model: "Tesla-V100-SXM2-32GB"
gpu-driver-version: "440.95.01"
gpu-memory-in-mib: "32480"
cuda-version: "10.2"
support-cuda-10-02: "true"
...
まとめ
● 機械学習WorkloadをScheduleする際に発生する典型的な要件
● KubernetesにおけるBatch Schedulerの現状
○ OSSで大量バッチを処理するとなるとvolcanoくらい
● Scheduler Deployment パターン の 比較
○ kube-scheduler or カスタム, 単一 or 複数 scheduler
● PFNで 単一 & kube-scheduler を拡張を選択した理由
● PFNにおける kube-scheduler の 利用&拡張 事例
○ kube-schedulerをフル活用して様々な要件に対応している
50
Any Questions?
51

More Related Content

What's hot

Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)NTT DATA Technology & Innovation
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理NTT DATA Technology & Innovation
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
Topology Managerについて / Kubernetes Meetup Tokyo 50
Topology Managerについて / Kubernetes Meetup Tokyo 50Topology Managerについて / Kubernetes Meetup Tokyo 50
Topology Managerについて / Kubernetes Meetup Tokyo 50Preferred Networks
 
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...Preferred Networks
 
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48Preferred Networks
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」Masahito Zembutsu
 
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...Preferred Networks
 
20180723 PFNの研究基盤 / PFN research system infrastructure
20180723 PFNの研究基盤 / PFN research system infrastructure20180723 PFNの研究基盤 / PFN research system infrastructure
20180723 PFNの研究基盤 / PFN research system infrastructurePreferred Networks
 
Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版VirtualTech Japan Inc.
 
KubeCon 2021 NA Recap - Scheduler拡張事例最前線 / Kubernetes Meetup Tokyo #47 / #k8sjp
KubeCon 2021 NA Recap - Scheduler拡張事例最前線 / Kubernetes Meetup Tokyo #47 / #k8sjpKubeCon 2021 NA Recap - Scheduler拡張事例最前線 / Kubernetes Meetup Tokyo #47 / #k8sjp
KubeCon 2021 NA Recap - Scheduler拡張事例最前線 / Kubernetes Meetup Tokyo #47 / #k8sjpPreferred Networks
 
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-clusterKubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-clusterPreferred Networks
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門Kohei Tokunaga
 
eBPFは何が嬉しいのか
eBPFは何が嬉しいのかeBPFは何が嬉しいのか
eBPFは何が嬉しいのかYutaro Hayakawa
 
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Ryuichi Sakamoto
 
Kuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOpsKuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOpsshunki fujiwara
 

What's hot (20)

Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Topology Managerについて / Kubernetes Meetup Tokyo 50
Topology Managerについて / Kubernetes Meetup Tokyo 50Topology Managerについて / Kubernetes Meetup Tokyo 50
Topology Managerについて / Kubernetes Meetup Tokyo 50
 
MLflow + Kubeflow MLプラットフォーム事例 #sparktokyo
MLflow + Kubeflow MLプラットフォーム事例 #sparktokyoMLflow + Kubeflow MLプラットフォーム事例 #sparktokyo
MLflow + Kubeflow MLプラットフォーム事例 #sparktokyo
 
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
 
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
 
20180723 PFNの研究基盤 / PFN research system infrastructure
20180723 PFNの研究基盤 / PFN research system infrastructure20180723 PFNの研究基盤 / PFN research system infrastructure
20180723 PFNの研究基盤 / PFN research system infrastructure
 
Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版
 
KubeCon 2021 NA Recap - Scheduler拡張事例最前線 / Kubernetes Meetup Tokyo #47 / #k8sjp
KubeCon 2021 NA Recap - Scheduler拡張事例最前線 / Kubernetes Meetup Tokyo #47 / #k8sjpKubeCon 2021 NA Recap - Scheduler拡張事例最前線 / Kubernetes Meetup Tokyo #47 / #k8sjp
KubeCon 2021 NA Recap - Scheduler拡張事例最前線 / Kubernetes Meetup Tokyo #47 / #k8sjp
 
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-clusterKubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
 
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
 
継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
eBPFは何が嬉しいのか
eBPFは何が嬉しいのかeBPFは何が嬉しいのか
eBPFは何が嬉しいのか
 
LakeTahoe
LakeTahoeLakeTahoe
LakeTahoe
 
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装
 
Kuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOpsKuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOps
 

Similar to How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / Cloud Native Days Tokyo 2020

[DL輪読会]Convolutional Sequence to Sequence Learning
[DL輪読会]Convolutional Sequence to Sequence Learning[DL輪読会]Convolutional Sequence to Sequence Learning
[DL輪読会]Convolutional Sequence to Sequence LearningDeep Learning JP
 
もっとも簡単なKubernetes構築 on Raspberry pi (July tech festa winter 2021)
もっとも簡単なKubernetes構築 on Raspberry pi  (July tech festa winter 2021)もっとも簡単なKubernetes構築 on Raspberry pi  (July tech festa winter 2021)
もっとも簡単なKubernetes構築 on Raspberry pi (July tech festa winter 2021)Kamon Nobuchika
 
Wordpress案件にgkeを採用してみた(短縮版)
Wordpress案件にgkeを採用してみた(短縮版)Wordpress案件にgkeを採用してみた(短縮版)
Wordpress案件にgkeを採用してみた(短縮版)Yu Amano
 
エンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learned
エンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learnedエンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learned
エンプラに Kubernetes を 導入してみて分かった 4つの Lessons LearnedDaiki Kawanuma
 
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -Yukihiko SAWANOBORI
 
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)Kotaro Nakayama
 
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
KubernetesでGPUクラスタを管理したい
KubernetesでGPUクラスタを管理したいKubernetesでGPUクラスタを管理したい
KubernetesでGPUクラスタを管理したいYuji Oshima
 
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...NTT DATA Technology & Innovation
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)NTT DATA Technology & Innovation
 
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-Takashi Sogabe
 
GTC 2018 で発表されたディープラーニング最新情報
GTC 2018 で発表されたディープラーニング最新情報GTC 2018 で発表されたディープラーニング最新情報
GTC 2018 で発表されたディープラーニング最新情報NVIDIA Japan
 
EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活Kuninobu SaSaki
 
Cho Bachelor Thesis
Cho Bachelor Thesis Cho Bachelor Thesis
Cho Bachelor Thesis pflab
 
2012-03-08 MSS研究会
2012-03-08 MSS研究会2012-03-08 MSS研究会
2012-03-08 MSS研究会Kimikazu Kato
 
kube-system落としてみました
kube-system落としてみましたkube-system落としてみました
kube-system落としてみましたShuntaro Saiba
 
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise CloudCODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise CloudToshikazu Ichikawa
 
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Preferred Networks
 
JAWS FESTA 2018 OSAKA AHAB
JAWS FESTA 2018 OSAKA AHABJAWS FESTA 2018 OSAKA AHAB
JAWS FESTA 2018 OSAKA AHAB陽平 山口
 
Hadoopデータ基盤とMulti-CloudなML基盤への取り組みの紹介
Hadoopデータ基盤とMulti-CloudなML基盤への取り組みの紹介Hadoopデータ基盤とMulti-CloudなML基盤への取り組みの紹介
Hadoopデータ基盤とMulti-CloudなML基盤への取り組みの紹介MicroAd, Inc.(Engineer)
 

Similar to How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / Cloud Native Days Tokyo 2020 (20)

[DL輪読会]Convolutional Sequence to Sequence Learning
[DL輪読会]Convolutional Sequence to Sequence Learning[DL輪読会]Convolutional Sequence to Sequence Learning
[DL輪読会]Convolutional Sequence to Sequence Learning
 
もっとも簡単なKubernetes構築 on Raspberry pi (July tech festa winter 2021)
もっとも簡単なKubernetes構築 on Raspberry pi  (July tech festa winter 2021)もっとも簡単なKubernetes構築 on Raspberry pi  (July tech festa winter 2021)
もっとも簡単なKubernetes構築 on Raspberry pi (July tech festa winter 2021)
 
Wordpress案件にgkeを採用してみた(短縮版)
Wordpress案件にgkeを採用してみた(短縮版)Wordpress案件にgkeを採用してみた(短縮版)
Wordpress案件にgkeを採用してみた(短縮版)
 
エンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learned
エンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learnedエンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learned
エンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learned
 
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
 
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
 
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
KubernetesでGPUクラスタを管理したい
KubernetesでGPUクラスタを管理したいKubernetesでGPUクラスタを管理したい
KubernetesでGPUクラスタを管理したい
 
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
 
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
 
GTC 2018 で発表されたディープラーニング最新情報
GTC 2018 で発表されたディープラーニング最新情報GTC 2018 で発表されたディープラーニング最新情報
GTC 2018 で発表されたディープラーニング最新情報
 
EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活
 
Cho Bachelor Thesis
Cho Bachelor Thesis Cho Bachelor Thesis
Cho Bachelor Thesis
 
2012-03-08 MSS研究会
2012-03-08 MSS研究会2012-03-08 MSS研究会
2012-03-08 MSS研究会
 
kube-system落としてみました
kube-system落としてみましたkube-system落としてみました
kube-system落としてみました
 
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise CloudCODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
 
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
 
JAWS FESTA 2018 OSAKA AHAB
JAWS FESTA 2018 OSAKA AHABJAWS FESTA 2018 OSAKA AHAB
JAWS FESTA 2018 OSAKA AHAB
 
Hadoopデータ基盤とMulti-CloudなML基盤への取り組みの紹介
Hadoopデータ基盤とMulti-CloudなML基盤への取り組みの紹介Hadoopデータ基盤とMulti-CloudなML基盤への取り組みの紹介
Hadoopデータ基盤とMulti-CloudなML基盤への取り組みの紹介
 

More from Preferred Networks

PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57Preferred Networks
 
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Preferred Networks
 
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Preferred Networks
 
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...Preferred Networks
 
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55Preferred Networks
 
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2Preferred Networks
 
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2Preferred Networks
 
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2Preferred Networks
 
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演Preferred Networks
 
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)Preferred Networks
 
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)Preferred Networks
 
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語るKubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語るPreferred Networks
 
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張Preferred Networks
 
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会Preferred Networks
 
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50Preferred Networks
 
PFN Summer Internship 2021 / Kohei Shinohara: Charge Transfer Modeling in Neu...
PFN Summer Internship 2021 / Kohei Shinohara: Charge Transfer Modeling in Neu...PFN Summer Internship 2021 / Kohei Shinohara: Charge Transfer Modeling in Neu...
PFN Summer Internship 2021 / Kohei Shinohara: Charge Transfer Modeling in Neu...Preferred Networks
 
Playgram開発秘話_2022年1月プログラミングシンポジウム招待講演_西澤勇輝、岡本雄太
Playgram開発秘話_2022年1月プログラミングシンポジウム招待講演_西澤勇輝、岡本雄太Playgram開発秘話_2022年1月プログラミングシンポジウム招待講演_西澤勇輝、岡本雄太
Playgram開発秘話_2022年1月プログラミングシンポジウム招待講演_西澤勇輝、岡本雄太Preferred Networks
 
東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太
東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太
東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太Preferred Networks
 
MN-3, MN-Core and HPL - SC21 Green500 BOF
MN-3, MN-Core and HPL - SC21 Green500 BOFMN-3, MN-Core and HPL - SC21 Green500 BOF
MN-3, MN-Core and HPL - SC21 Green500 BOFPreferred Networks
 
PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催
PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催
PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催Preferred Networks
 

More from Preferred Networks (20)

PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
 
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
 
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
 
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
 
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
 
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
 
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
 
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
 
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
 
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
 
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
 
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語るKubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
 
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
 
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
 
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
 
PFN Summer Internship 2021 / Kohei Shinohara: Charge Transfer Modeling in Neu...
PFN Summer Internship 2021 / Kohei Shinohara: Charge Transfer Modeling in Neu...PFN Summer Internship 2021 / Kohei Shinohara: Charge Transfer Modeling in Neu...
PFN Summer Internship 2021 / Kohei Shinohara: Charge Transfer Modeling in Neu...
 
Playgram開発秘話_2022年1月プログラミングシンポジウム招待講演_西澤勇輝、岡本雄太
Playgram開発秘話_2022年1月プログラミングシンポジウム招待講演_西澤勇輝、岡本雄太Playgram開発秘話_2022年1月プログラミングシンポジウム招待講演_西澤勇輝、岡本雄太
Playgram開発秘話_2022年1月プログラミングシンポジウム招待講演_西澤勇輝、岡本雄太
 
東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太
東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太
東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太
 
MN-3, MN-Core and HPL - SC21 Green500 BOF
MN-3, MN-Core and HPL - SC21 Green500 BOFMN-3, MN-Core and HPL - SC21 Green500 BOF
MN-3, MN-Core and HPL - SC21 Green500 BOF
 
PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催
PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催
PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催
 

How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / Cloud Native Days Tokyo 2020

  • 1. How to Schedule Machine Learning Workloads Nicely In Kubernetes Shingo Omura, Preferred Networks, Inc. Cloud Native Days Tokyo 2020 (Day2) 09/09 15:00-15:40 - Track F
  • 2. 自己紹介 - 大村伸吾 (Shingo Omura) ● エンジニア, Preferred Networks, Inc. ○ 社内向けGPUクラスタの開発運用 ○ kubernetes sig-scheduling で活動中 ● @everpeace (twitter) ● shingo.omura (facebook) 2
  • 3. PFN における機械学習クラスタ関連の過去のスライド 3 KeyNote at July Tech Festa 2018 SlideShare Kubernetes Meetup Tokyo #13 SlideShare
  • 4. Outline ● PFNのクラスタ概要 ● PFNにおける典型的なML Workload ● ML Workloadにおける典型的なスケジューラへの要求 ● KubernetesにおけるBatch Schedulerの現状 ● KubernetesにおけるScheduler Deployment戦略 ● kube-shedulerの動作概要と拡張方式 ● PFNにおける kube-scheduler の活用&拡張事例 ● まとめ 4
  • 6. 2017年 Tesla P100 PCIe x 8 10GbE x 2 InfiniBand FDR x 2 Total 1024 GPUs 19.1 PFLOPS MN-1a Server Spec MN-3 Series 6 PFN の クラスタ MN-1 Series MN-2 Series 2020年 MN-Core x 4 100GbE x 2 MN-3a Server Spec Total 192 MN-Cores 4.7 PFLOPS (21.11 GFLOPS/W) MN-Core DirectConnect Icon pack by Icons8 - https://icons8.com NVIDIA GPUなどの最新技術を採用した プライベート・スーパーコンピュータ MN-2 を自社構築し、 7月に稼働 Preferred Networksの深層学習用スーパーコンピュータ MN-3がスーパーコンピュータ省電力性能ランキング Green500で世界1位を獲得 世界1位!! 2019年 Tesla V100 SXM2 x 8 100GbE x 4 MN-2a Server Spec Total 1024 GPUs 128 PFLOPS RoCEv2 with SR-IOV 2018年 Tesla V100 PCIe x 8 10GbE x 2 InfiniBand EDR x 2 MN-1b Server Spec Total 1536 GPUs 57.3 PFLOPS
  • 12. 12 PFN での Scheduler(Podへの配置/再配置) への要求 ● High Resource Utilization (Packing / Defrag) ● Priority Scheduling / Preemption ● Gang-Scheduling (a.k.a. Co-Scheduling) ● Network Topology Aware Scheduling (a.k.a. Zone Aware Scheduling) ● Hardware Topology Aware Scheduling ● Soft Quota (a.k.a. Throttling) ● Flexible Fair Schduling ● GPU Driver Version/GPU Model pinning
  • 13. High Utilization Rate ● Packing: できるだけ効率よくPodをNodeに詰めたい ○ Podのリソース要求は多次元ベクトル ■ 1次元でもNP-Hardな組合せ最適化問題(Bin Packing) ● Defrag: フラグメンテーションを除去したい ○ Podの実行時間は不定なので時間が建つと穴が開く 13 Packing
  • 14. High Utilization Rate ● Packing: できるだけ効率よくPodをNodeに詰めたい ○ Podのリソース要求は多次元ベクトル ■ 1次元でもNP-Hardな組合せ最適化問題(Bin Packing) ● Defrag: フラグメンテーションを除去したい ○ Podの実行時間は不定なので時間が建つと穴が開く 14 デフラグ
  • 15. Priority Scheduling / Preemption ● たとえクラスタが混んでいても、重要なジョブは動かしたい ○ 重要でないPodを止め(Preemptし)て重要なPodを動かしたい 15Icons made by Freepik from www.flaticon.com is licensed by CC 3.0 BY プリエンプト される (犠牲になる)
  • 16. Priority Scheduling / Preemption ● たとえクラスタが混んでいても、重要なジョブは動かしたい ○ 重要でないPodを止め(Preemptし)て重要なPodを動かしたい 16Icons made by Freepik from www.flaticon.com is licensed by CC 3.0 BY 他のコンテナを プリエンプト して実行
  • 17. Gang-Scheduling (a.k.a. Co-Scheduling) ● 複数のPodを一度に配置したい ○ All-Reduceの分散深層学習は全pod揃わないと計算開始できない ○ 2つの Gang を1 Podずつ配置すると容易にdeadlockしてしまうため 17Icons made by Freepik from www.flaticon.com is licensed by CC 3.0 BY Job A Job B どちらも サイズ6
  • 18. Network Topology Aware Scheduling (a.k.a. Zone Aware Scheduling) ● 分散深層学習はpod間のネットワークが早い方が学習も早い ● 特定のゾーン/どこか単一(unique)なゾーンに配置したい ○ ゾーン = Network的に近いノードの塊 例: Availability Zone, Placement Group 18 Zone A Node-A-1 Node-A-2 Node-A-3 Node-A-4 Zone B Node-B-1 Node-B-2 Node-B-3 Node-B-4 Zone Bがいいです いいです   Zoneに閉じるならどこでも
  • 19. Hardware Topology Aware Scheduling ● サーバ内のハードウェアにもトポロジがある ● うまく割り当てないとボトルネックになりうる 19Icon pack by Icons8 - https://icons8.com NUMA NodeNUMA Node GPU NIC MEM CPU CPU MEM NIC GPU
  • 20. Hardware Topology Aware Scheduling ● サーバ内のハードウェアにもトポロジがある ● うまく割り当てないとボトルネックになりうる 20Icon pack by Icons8 - https://icons8.com NUMA NodeNUMA Node GPU NIC MEM CPU CPU MEM NIC GPUNVLink等のGPU間 Interconnectが 利用可能場合あり NUMA Nodeを 超えるデータ転送は ボトルネックになりがち
  • 21. 使いすぎなので Scheduleしません Soft Quota (a.k.a. Throttling) ● Kubernetes の Quota はv1.19時点ではHard Quota ○ Hard Quota 超過したらPod作成エラーになる ● 利用上限はかけたいけどPodは投げておきたい ○ Podは作れるけどスケジュールされないようにしたい 21 まだ使ってOK Gauge by www.mindgraphy.com from the Noun Project Namespace A Namespace B
  • 22. “Flexible” Fair Schduling ● 複数で利用するので、公平性(Fairness) は大事 ○ ユーザ単位、プロジェクト単位 ● 様々な公平性の例 ○ First Come First Served: 早いもの勝ち(ある意味公平?) ○ Dominant Resource Fairness (DRF): ■ Max-Min Fairness の一種 ■ Hadoop Yarn でも実装されてている ■ Dominant Resource Share が均等なことを「公平」と見る ● Dominant Resouce Share = 各リソースの消費割合の最大値 = MAX(CPU share, Memory share, GPU share) ○ DRF over time ■ 次元を リソース量・時間 に拡張 22 厄介なことに ビジネス的にはUnfair な状態が 望ましいことがある
  • 23. GPU Driver Version/GPU Model pinning ● GPUモデル、メモリ量、ドライババージョン等を固定したい 23gpu by Misha Petrishchev from the Noun Project GPUの搭載メモリ 32G 16G GPUモデル V100 P100 GPU Driverバージョン CUDA 9 CUDA 10
  • 24. 24 PFN での Scheduler(Podへの配置/再配置) への要求 ● High Resource Utilization (Packing / Defrag) ● Priority Scheduling / Preemption ● Gang-Scheduling (a.k.a. Co-Scheduling) ● Network Topology Aware Scheduling (a.k.a. Zone Aware Scheduling) ● Hardware Topology Aware Scheduling ● Soft Quota (a.k.a. Throttling) ● Flexible Fair Schduling ● GPU Driver Version/GPU Model pinning
  • 25. OSS Batch Scheduler on Kubernetes? 25
  • 26. 26 Batch Scheduler はあまり多くないのが現状 ● Volcano ○ CNCF Sandbox Project (since May 2020) ○ sig-schedulingで開発中のkube-batch(*)をベースとするcustom schedulerを コアとするバッチシステム ○ Queue, Fair scheduilng(Dominant Resource Fairnessベース), Gang scheduling, priority/preemption等をサポート ○ Kubeflow でも gang scheduling用のscheduerとしてintegrateされている ■ 注意: 高負荷な環境で gangが部分停止するとdeadlockが起きると指摘あり ● kube-scheduler ○ kubernetesのdefaultスケジューラ ○ 様々なpre-definedなポリシーが設定可能 ○ カスタム拡張がプラグインできるようになっている ■ 最近特に拡張性を高める機能開発が活発に行われている ○ Batch専用ではないが拡張することである程度対応可能 (*)現在あまり活発に開発されていないので注意
  • 28. Kubernetes における Scheduler Deployment 戦略 28 kube-scheduler custom scheduler kube-scheduler + extensions multiple schedulers Podの spec.schedulerName でschedulerを選択
  • 29. kube-scheduler v.s. Custom Scheduler 😀 defaultなので最新機能/仕様に追従できる 😀 kube-schedulerの機能を保持したまま拡張可能 ○ node selector, taint/toleration, affinity/anti-affinity, preemption policy等 😕 kube-schedulerの基本動作(後述)からは逸脱できない 29 kube-scheduler (+ extensions) custom scheduler 😀 柔軟な実装が可能 😕 kube-schedulerの仕様の再実装が必要 ○ volcano は conformance test(e2e) は通ったことがある ○ 重要な機能はkube-scheduler内部で実装されている 😕 kubernetes側で新たな仕様が追加されると追従が必要
  • 30. How About Multiple Schedulers?? 😀 schedule ポリシーを分割できる(例:サービス、バッチ用) ○ もし分けるなら対象node poolを混ぜないのがお勧め 😕 複数スケジューラにおける注意点 ○ 排他処理しないと高負荷時はNodeがあふれる ○ ポリシーのconflictが起きると厄介 ■ サービス→ spread, バッチ → packing ○ kube-scheduler の Preemption は cross-scheduler preemptionなので注意が必要 ■ 例: custom schedulerが低優先度podを置いても置いても kube-schedulerでpreemptionし続ける 30 multiple schedulers
  • 31. PFNのGPUクラスタでの現時点での判断 ● 常にバージョンアップされ続けるkubernetesでは kube-schedulerの拡張性を最大限活用する ● kube-schedulerの拡張性が足りなければupstreamへ貢献 ○ Co-Scheduling Plugin ■ kubernetes/enhancements#1463, kubernetes-sigs/scheduler-plugins#4 ○ PostFilter(Preemption) ExtetionPoint (since v1.19): ■ kubernetes/kubernetes#85871, #90025, #91038, #93534 ● Volcanoもwatchを継続する 31 kube-scheduler + extensions
  • 33. 33 kube-scheduler の 動作概要 出典: そのコンテナ、もっと「賢く」置けますよ? #CNDT2019 / CloudNative Days Tokyo 2019 Special Thanks 🎉 @y_taka_23 ① Node未定Podを キューに格納 ② 1個ずつ取り 出して配置先 Nodeを決定 ③ Pod毎に並行で Nodeを登録 ※ ①②③のテキストは講演者による加筆
  • 34. 34 kube-scheduler の 動作概要 出典: そのコンテナ、もっと「賢く」置けますよ? #CNDT2019 / CloudNative Days Tokyo 2019 Special Thanks 🎉 @y_taka_23 通常時 ● Filter, Scoreは色々提供されている ● 拡張によってカスタム関数を定義可能 Preemption時 ● Schedulerに選ばれたVictimを調整可能(現実 的にはあまり使い所がない ) ● v1.19で拡張可能に(#91038)!!! ※ 吹き出しは講演者による加筆
  • 35. kube-schedulerの拡張方法は 2 種類 • Scheduler Extender – Webhook による拡張 – 指定したendpointとJSONをやり取り – 拡張点: Filter, Score, Preempt, Bind – 😕 パフォーマンス注意、拡張が限定的、内部キャッシュ効かない • Scheduling Framework - Kubernetes – Extenderよりも格段に柔軟な拡張ができるようになった • Schedulerの内部処理を細かくHookできるようになった – ただしコンパイルしないといけない(例: kubernetes-sigs/scheduler-plugins) – Schedulerの内部キャッシュにアクセス可能 – Schedulerコードが再利用しやすい 35
  • 36. Scheduler Extender 36 出典: 明日、業務で使える Scheduler Extender #cloudnativejp / Cloud Native Meetup Tokyo 7th Special Thanks 🎉 @y_taka_23
  • 37. Scheduling Framework 37 Filter失敗時の処理 since v1.19 (preemptionはここで実装可能) Scheduler 内部でNodeが確定し たことをPluginに通知 queueの 順序 Bind処理をWait させることができる
  • 39. 39 (revisited) PFNでの Scheduler への要求 ● High Resource Utilization (Packing/Defrag) ● Priority Scheduling / Preemption ● Gang-Scheduling (a.k.a. Co-Scheduling) ● Network Topology Aware Scheduling (a.k.a. Zone Aware Scheduling) ● Hardware Topology Aware Scheduling ● Soft Quota (a.k.a. Throttling) ● Flexible Fair Schduling ● GPU Driver Version/GPU Model pinning
  • 40. High Utilization Rate ● Packing: できるだけ効率よくPodをNodeに詰めたい ✅ ScorePlugin で datacenter topology を考慮したカスタムルール を実装して Packing している ● 通常だとNodeResourcesMostAllocated Scoreで🆗👌 ○ cpu, memory, gpu等の割当率のweighted sum(重みカスタム可) ● Defrag: フラグメンテーションを除去したい ❎ 現在は行えていない ● 今後の方向性 ■ descheduler を利用する ● schedulerのように実装をPluginできないため要改修 ■ PostFilter Plugin で Preemptionしつつdefragを試す 40
  • 41. Priority Scheduling / Preemption ✅ PFNのGPUクラスタのPriority設定(一部) 41 Grand-Challenge ● クラスタ全系を使う等、超大規模実験用(通常利用不可) High ● 高優先度(通常preemptionされないとして利用可能) ● Soft Quota による利用リソース量制限あり(申請により緩和可能) ● non-GPU な High Pod は GPUノードにスケジュールされないように NodeにLabel & Admission WebhookでPodにnode selector付与 Low ● 通常のワークロード用(highにpreemptionされる前提) ● Soft Quotaなし Low-Cpu ● non-GPU Pod 用の low (Admission webhookで自動変換) ○ GPU 需要が低いときにGPUノードのCPUが利用可能 ○ Low以上のPriorityのPodにpreemptionされるので注意
  • 42. ✅ Scheduling Frameworkを使って独自に実装 ○ Sort, PreFilter, Permit を利用して実装 ○ kubernetes-sigs/scheduler-plugins にも co-scheduling plugin あり Gang-Scheduling (a.k.a. Co-Scheduling) 42 kind: Pod metadata: annotations: gang-name: "job-a" gang-size: "32" gang-schedule-timeout: "3m" PodのannotationでGangへの所属を定義
  • 44. Network Topology Aware Scheduling (a.k.a. Zone Aware Scheduling) ● 特定ゾーン: Nodeにzoneラベルを付与して、node selector を使う ● Uniqueゾーン (Gangのみ対応) ○ pod Affinity + Scheduling Framework(PreFilter, Filter)で実現 ■ Admission webhookでpod affinityを付与 ■ Gangの最初のPodの時に空いているZoneを見つければOK 44 annotations: gang-name: "job-a" gang-size: "32" uniqueue-zone-topology-key: "rack" metadata: labels: gang-name: "gang-a" ... podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchLabels: gang-name: "job-a" topologyKey: "rack" Webhook Icon by Icons8
  • 45. Unique Zone Constraint の Scheduling Frameworkによる実装 45 ● Gang の最初のPod のときだけ動作する ○ gang scheduling との連携機能 ● PreFilter ○ 各Zone毎の空きを監視してGangが入るZoneを探索 ○ 見つかったZoneをPlugin内に保持 ● Filter ○ 見つかったZoneのnode以外はfilter outする
  • 46. Hardware Topology Aware Scheduling ✅ CPU & GPU affinity ○ Topology Manager を 活用 (nvidia device pluginも対応している) ❎ (CPU&GPU) & NIC affinity: 実現できていない ○ 実装案: Device Plugin + CNI Plugin (参照: intel/sriov-network-device-plugin) ■ NIC をdevice pluginでresource化 (topology manager連携できる) ■ CNI Pluginは割り当たったNICを使ってnetworkを設定 46Icon pack by Icons8 - https://icons8.com NUMA NodeNUMA Node GPU NIC MEM CPU CPU MEM NIC GPU
  • 47. Soft Quota (a.k.a. Throttling) ✅ kube-throttler を利用(Scheduler Extenderとして動作) ○ CRDでしきい値を定義、Controllerがstatusをreconcile 47Gauge by www.mindgraphy.com from the Noun Project # priority-class=high labelのpodの # 利用量が4 gpu超えたらschedule拒否 kind: Throttle spec: ... - podSelector: matchLabels: priority-class: high threshold: resourceRequests: nvidia.com/gpu: 4 status: # Throttleが閉じているかどうか # ControllerでReconcile Throttleが閉じていたら 空を返す Throttleが閉じていたら 空を返す 出典: 明日、業務で使える Scheduler Extender #cloudnativejp / Cloud Native Meetup Tokyo 7th Special Thanks 🎉 @y_taka_23
  • 48. ✅ Dominant Resource Fairness (DRF) ○ Sort Plugin: Dominant Resource Share が小さい順に並ぶように ■ Low priority以下でののみ有効、lowより上はFirst Come First Served ❎ Flexible Fairness (近日導入予定) ○ Credit CRD を導入 ○ Pod と Credit は Annotation で紐付け ○ 様々なpolicyを合成可能 ■ Periodic Fill: 定期的に付与 ■ Resource Usage Charge ■ Idle Pods Penalty ■ Preemptors Penalty “Flexible” Fair Schduling 48 Icons made by Gregor Cresnar from www.flaticon.com is licensed by CC 3.0 BY Money bag from pingwing Sort Plugin: Creditの多いもの順に並べる PostFilter: Creditの少ない順にVictimに (※ low priority同士もpreemption対象に ) watch Manage Balances Credit Controller
  • 49. GPU Driver Version/GPU Model pinning ✅ kubernetes-sigs/node-feature-discovery を参考に独自のFeature Discovery DaemonsetをデプロイしてNode Labelを管理 ○ ユーザは所望のnode selectorを付与してPodを作成 49gpu by Misha Petrishchev from the Noun Project kind: Node metadata: labels: gpu-model: "Tesla-V100-SXM2-32GB" gpu-driver-version: "440.95.01" gpu-memory-in-mib: "32480" cuda-version: "10.2" support-cuda-10-02: "true" ...
  • 50. まとめ ● 機械学習WorkloadをScheduleする際に発生する典型的な要件 ● KubernetesにおけるBatch Schedulerの現状 ○ OSSで大量バッチを処理するとなるとvolcanoくらい ● Scheduler Deployment パターン の 比較 ○ kube-scheduler or カスタム, 単一 or 複数 scheduler ● PFNで 単一 & kube-scheduler を拡張を選択した理由 ● PFNにおける kube-scheduler の 利用&拡張 事例 ○ kube-schedulerをフル活用して様々な要件に対応している 50